package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloModulo;
import com.ipartek.formacion.gestformwww.modelo.beans.Curso;
import com.ipartek.formacion.gestformwww.modelo.beans.Modulo;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author David y Aitor
 */
public class ListarModuloAccion implements Accion{

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion = request.getSession(false);
        AccionRouter router = null;
        ModeloModulo modelo = (ModeloModulo) servlet.getServletContext().getAttribute("ModeloModulo");
        ArrayList<String> errores= new ArrayList<String>();
        ResourceBundle bundle = (ResourceBundle) servlet.getServletContext().getAttribute("errores-mapeo");
        Integer horasmodulos=0;
        Curso curso=(Curso)request.getAttribute("visualizacurso");
        if (sesion.getAttribute("usuario") != null) {
            request.setAttribute("contenido-curso", "lista-modulos");

            ArrayList<Modulo> modulos=new ArrayList<Modulo>();
            try {
                modulos = modelo.listarModulos(curso.getCurId());
                horasmodulos= modelo.cuentaHorasModulos(curso.getCurId());
            } catch (GestorFormacionExcepcion ex) {
                Logger.getLogger(ListarModuloAccion.class.getName()).log(Level.SEVERE, null, ex);
                sesion.setAttribute("excepciones", ex.getMessage());
            }
            request.setAttribute("listaModulos", modulos);

            if ((curso.getCurDuracion()*60+curso.getCurDuracionMinutos())!=(horasmodulos*60)){
                errores.add(bundle.getString("error-horas").replace("%1", horasmodulos.toString()).replace("%2",curso.getCurDuracion().toString()));
            }
     /* Lo quitamos no es necesario ya que no hay búsquedas de módulas.
      if (modulos.isEmpty()){
                errores.add(bundle.getString("error-sin-resultados"));
            }
      */
            request.setAttribute("errores", errores);
            router = new AccionRouter("principal");
        } else {
            router = new AccionRouter("inicio", false);
        }
        return router;
    }

    public void inicializa(AccionFactory factory) {

    }

}
